package models

import (
	"errors"
	"go-jhb-admin-api/config"
	"os"

	"gorm.io/gorm"
)

// FriendsCircle 表示朋友圈表
type FriendsCircle struct {
	ID         uint   `gorm:"primaryKey;autoIncrement;not null"`
	UserID     uint   `gorm:"type:int unsigned;not null;index;comment:用户ID"`
	Type       uint8  `gorm:"type:tinyint unsigned;not null;default:1;comment:类型 1:私密 2:全网"`
	NewType    uint8  `gorm:"type:tinyint unsigned;not null;default:1;comment:新增类型"`
	FzID       uint   `gorm:"type:int unsigned;not null;default:1;comment:分支ID"`
	Imgs       string `gorm:"type:varchar(3000);not null;default:'';comment:图片"`
	Content    string `gorm:"type:varchar(3000);not null;default:'';comment:内容"`
	More       string `gorm:"type:varchar(3000);not null;default:'';comment:更多信息"`
	Status     uint8  `gorm:"type:tinyint unsigned;not null;default:1;comment:1:隐藏 2:显示"`
	CreateTime uint   `gorm:"type:int unsigned;not null;default:0;comment:创建时间"`
	UpdateTime uint   `gorm:"type:int unsigned;not null;default:0;comment:更新时间"`
	DeleteTime uint   `gorm:"type:int unsigned;not null;default:0;comment:删除时间"`
}

// TableName 自定义表名
func (FriendsCircle) TableName() string {
	tablePrefix := os.Getenv("DB_PREFIX") // 从环境变量或配置文件中获取前缀
	return tablePrefix + "sj_friends_circle"
}

// GetByID 根据id获取详情
func (detail *FriendsCircle) GetByID(id uint) error {
	// 查询管理员信息
	if err := config.DB.Where("id = ?", id).Scopes(DeleteTime).First(detail).Error; err != nil {
		// 如果没有找到，返回一个自定义错误
		if errors.Is(err, gorm.ErrRecordNotFound) {
			return errors.New("数据不存在")
		}
		// 其他错误返回
		return err
	}

	return nil
}
